/*
 * De controller die :
 * - bijhoudt waar alle elementen staan
 * - leest en reageert op keys
 * - bouwt en update het bord
 * - beheert de grootte van een veld
 */
package Controller;

import Model.*;
import View.Bord;
import java.awt.Image;

/**
 *
 * @author Bram
 */
public class BordController {

    private Bord bord;
    private Image[][] objecten;
    private Image[][] velden;
    
    public BordController() {
        bord = new Bord();
    }

    public Image[][] getObjecten() {
        return objecten;
    }

    public Image[][] getVelden() {
        return velden;
    }
    
    public Bord getView(){
        return bord;
    }
    
    public void defineWorld(String level){
        objecten = new Image[11][20];
        velden = new Image[11][20];
        int row = 0;
        int column = 0;
        
        for(int i = 0; i < level.length(); i++){
            char dit = level.charAt(i);
            
            switch(dit){
                case '\n':
                    row += 1;
                    column = 0;
                break;
                    
                case '#': 
                    velden[row][column] = null;
                    Muur tmpWall = new Muur();
                    Image image = tmpWall.getImage();
                    objecten[row][column] = image;
                    
                break;
                    
                case ' ': 
                    NormaalVeld tmpNormaalVeldLeeg = new NormaalVeld();
                    velden[row][column] = tmpNormaalVeldLeeg.getImage();
                    objecten[row][column] = null;
                break;
                    
                case '.': 
                    EindVeld tmpEindVeldLeeg = new EindVeld();
                    velden[row][column] = tmpEindVeldLeeg.getImage();
                    objecten[row][column] = null;
                break;
                    
                case '@': 
                    NormaalVeld tmpNormaalVeldSpeler = new NormaalVeld();
                    velden[row][column] = tmpNormaalVeldSpeler.getImage();
                    Speler tmpPlayer = new Speler();
                    objecten[row][column] = tmpPlayer.getImage();
                break;
                    
                case '$': 
                    NormaalVeld tmpNormaalVeldKrat = new NormaalVeld();
                    velden[row][column] = tmpNormaalVeldKrat.getImage();
                    Krat tmpCrate = new Krat();
                    objecten[row][column] = tmpCrate.getImage();
                break;
                    
                case '*': 
                    EindVeld tmpEindVeldKrat = new EindVeld();
                    velden[row][column] = tmpEindVeldKrat.getImage();
                    Krat tmpCrateEindVeld = new Krat();
                    objecten[row][column] = tmpCrateEindVeld.getImage();
                break;
                    
                case '+': 
                    EindVeld tmpEindVeldSpeler = new EindVeld();
                    velden[row][column] = tmpEindVeldSpeler.getImage();
                    Speler tmpPlayerEindVeld = new Speler();
                    objecten[row][column] = tmpPlayerEindVeld.getImage();
                break;
                   
                default:
                    velden[row][column] = null;
                    objecten[row][column] = null;
                break;
            }
            if(dit == '\n'){
                
            }else if(column < 20){
                column += 1;
                
            }else{
                
            }
           
        }
        bord.setVeldArray(velden);
        bord.setObjectArray(objecten);
        bord.repaint();
    }
}
